var year_category = '年度考核指标目录';
var check_year = new Date().getFullYear();
var catetory_root_id = 0;
var combo_select_year = new Ext.form.ComboBox({
			xtype : 'combo',
			fieldLabel : '<span style="color: red">*&nbsp;</span>考核年度',
			hiddenName : 'checkYear',
			valueField : 'value',
			displayField : 'text',
			mode : 'local',
			store : ds_year_select,
			value : new Date().getFullYear(),
			selectOnFocus : true,
			editable : false,
			allowBlank : false,
			width : 80,
			typeAhead : true,
			readOnly : true,
			triggerAction : 'all',
			loadingText : '加载中...',
			emptyText : '请选择考核年度',
			listeners : {
				'select' : function(combo, record, index) {
					// Ext.getBody().mask("数据加载，请稍等...","x-mask-loading");
					check_year = combo.getValue();
					var root = goalcategoryTree.getRootNode();
					root.setText(check_year + year_category);
					root.reload();
					// Ext.getBody().unmask();
				}
			}
		});
// 定义树的根节点
var root = new Ext.tree.AsyncTreeNode({
			text : new Date().getFullYear() + year_category,
			draggable : false,
			// uiProvider: Ext.ux.TreeCheckNodeUI,
			id : catetory_root_id
		});
// //设置后台加载数据的url
var goalcategoryTreeLoader = new Ext.tree.TreeLoader({
	dataUrl : '/supervise/biz/goalcategory/getRoot.action?checkYear='
			+ new Date().getFullYear()
		// baseAttrs: { uiProvider: Ext.ux.TreeCheckNodeUI } //添加 uiProvider 属性
	});

var goalcategoryTree = new Ext.tree.TreePanel({
			// id : 'tree-main',
			title : '指标目录',
			frame : true,
			region : 'center',
			checkModel : 'single', // 对树的级联多选
			onlyLeafCheckable : false,// 对树所有节点都可选
			animate : false,
			border : false,
			rootVisible : true,
			autoScroll : true,
			firstLoad : true,
			tbar : [{
						text : '添加',
						iconCls : 'icon-add',
						handler : function(btn) {
							addNode('addNode');
						}
					}, '-', {
						text : '添加子目录',
						iconCls : 'icon-add',
						handler : function(btn) {
							addChildNode('addChildNode');
						}
					}, {
						text : '修改',
						iconCls : 'icon-edit',
						handler : function(btn) {
							editNode('editNode');
						}
					}, {
						text : '删除',
						iconCls : 'icon-del',
						handler : function(btn) {
							delNode('delNode');
						}
					},/*
						 * { text : '查看节点', iconCls : 'icon-search', handler:
						 * function(btn){ viewNode('viewNode'); } },
						 */{
						xtype : 'tbtext',
						text : '考核年度'
					}, combo_select_year, {
						xtype : 'tbfill'
					}],
			loader : new Ext.tree.TreeLoader({
						baseAttrs : {
							uiProvider : Ext.ux.TreeCheckNodeUI
						}
					}),
			root : root
		});

// 给树定义一个单击事件，其实本例中没什么用，俺这么写是为了调试方便，呵呵~~
goalcategoryTree.on('click', function(node, event) {
	// alert(node.id + "->" +node.text);
	// var rootNode = goalcategoryTree.getRootNode();
	// var rootId = rootNode.getPath('id');
	// var rootName = rootNode.getPath('text');
	// var nodeId = node.getPath('id');
	// var nodeName = node.getPath('text');
	// alert(node.getPath('id').substring(rootId.length) + '|' +
	// node.getPath('text').substring(rootName.length) );
	node.getUI().toggleCheck(true);// 选择节点的 check
	node.select();
		// if(node.getUI().isChecked()){
		// node.select();
		// } else {
		// // node.getOwnerTree().getSelectionModel().clearSelections();
		// }
		// var selectedNode =
		// goalcategoryTree.getSelectionModel().getSelectedNode();
		// if(selectedNode == null){
		// alert(null);
		// } else {
		// alert(selectedNode.id + "->" +selectedNode.text);
		// }
	});
goalcategoryTree.on("checkchange", function(node, checked) {
			if (checked) {
				node.select();
			} else {
				node.unselect();
			}
		});

goalcategoryTree.on('beforeload', function(node) {
	var checkYear = combo_select_year.getValue();
	if (!Ext.isNumber(checkYear)) {
		checkYear = new Date().getFullYear();
	}
	var nodeId;
	try {
		nodeId = parseInt(node.id);
	} catch (e) {
		nodeId = null;
	}
	if (Ext.isNumber(nodeId)) {
		this.loader.dataUrl = '/supervise/biz/goalcategory/getChildrenById.action?checkYear='
				+ checkYear + '&nodeId=' + node.id;
	} else {
		this.loader.dataUrl = "/supervise/biz/goalcategory/getRoot.action?checkYear="
				+ checkYear;
	}
		// var oldUrl = this.loader.dataUrl;
		// alert(oldUrl);
});

// 本例的主角，加载 tree TreePanel
// goalcategoryTree.setRootNode(root);
// goalcategoryTree.render(document.body);
// goalcategoryTree.expand(true, true);

// add ,edit, view operate
// #########################################################################################################################################
var win_add_node = new Ext.Window({
	title : '添加指标目录节点',
	width : 480,
	height : 640,
	resizable : false,
	autoHeight : true,
	closeAction : 'hide',
	modal : true,
	operateName : '',
	listeners : {
		'hide' : function() {
			this.setTitle('添加指标目录节点');
			win_add_node.findByType("form")[0].getForm().reset();
		}
	},
	items : [new Ext.FormPanel({
		labelWidth : 110,
		labelAlign : 'right',
		url : '/supervise/biz/goalcategory/saveGoalCategory.action',
		method : 'post',
		border : false,
		baseCls : 'x-plain',
		bodyStyle : 'padding:5px 5px 0',
		defaults : {
			anchor : '90%',
			msgTarget : 'side' // 验证信息显示右边
		},
		defaultType : 'textfield',
		items : [{
					xtype : 'hidden',
					name : 'goalCategory.id'
				}, {
					xtype : 'hidden',
					name : 'goalCategory.parentId' // 父节点id
				}, {
					xtype : 'hidden',
					name : 'goalCategory.isFixed',
					value : 'n'
				}, {
					xtype : 'textfield',
					readOnly : true,
					fieldLabel : '父目录路径'
				}, {
					xtype : 'textfield',
					readOnly : true,
					fieldLabel : '考核年度'
				}, {
					fieldLabel : '<span style="color: red">*&nbsp;</span>指标目录项名称',
					name : 'goalCategory.name',
					allowBlank : false,
					maxLength : 30
				}, {
					xtype : 'numberfield',
					fieldLabel : '分值',
					name : 'goalCategory.point',
					allowBlank : true,
					maxLength : 20
				}, {
					xtype : 'hidden',
					// fieldLabel : '排序',
					name : 'goalCategory.ordering',
					value : 0
				}, {
					xtype : 'numberfield',
					fieldLabel : '换算关系(%)',
					name : 'goalCategory.percent',
					disabled : true,
					value : 1,
					maxLength : 30
				}, {
					xtype : 'hidden',
					// fieldLabel : '目录项值',
					name : 'goalCategory.value'
				}, {
					xtype : 'hidden',
					// fieldLabel : '目录分类',
					name : 'goalCategory.tag'
				}, new Ext.form.ComboBox({
					fieldLabel : '被考核单位类型', // UI标签名称
					hiddenName : 'orgType',// 作为form提交时传送的参数
					allowBlank : true, // 是否允许为空
					mode : 'local', // 数据模式,local为本地模式
					readOnly : true, // 是否只读
					triggerAction : 'all', // 显示所有下列数.必须指定为'all'
					anchor : '90%',
					emptyText : '请选择被考核单位类型',
					store : new Ext.data.SimpleStore({ // 填充的数据
						fields : ["retrunValue", "displayText"],
						data : [['unit', '垂直管理单位'], ['dept', '机关'],
								['town', '乡镇'], ['project', '工业园区管委会和工程建设指挥部']]
					}),
					valueField : 'retrunValue', // 传送的值
					displayField : 'displayText',
					listeners : {
						'select' : function(combo, record, index) {
							var orgType = combo.getValue();
							try {
								var queryOrg = Ext.getCmp('caegory_checkOrgId');
								queryOrg.clearValue();
								queryOrg.store.reload({
											params : {
												orgType : orgType
											}
										});
							} catch (ex) {
								Ext.MessageBox.alert(ex);
							}
						}
					}
				}), {
					id : 'caegory_checkOrgId',
					xtype : 'combo',
					fieldLabel : '考核责任单位',
					hiddenName : 'goalCategory.checkOrgId',
					valueField : 'id',
					displayField : 'name',
					mode : 'local',
					store : new Ext.data.Store({
								url : '/supervise/sys/org/findOrgByType.action',
								reader : new Ext.data.JsonReader({
											root : 'root'
										}, [{
													name : 'id',
													type : 'int'
												}, {
													name : 'name',
													type : 'string'
												}])
							}),
					selectOnFocus : true,
					editable : false,
					allowBlank : true,
					triggerAction : 'all',
					loadingText : '加载中...',
					emptyText : '请考核单位'
				}, new Ext.form.ComboBox({
					fieldLabel : '指标申报单位类型', // UI标签名称
					hiddenName : 'applyOrgType',// 作为form提交时传送的参数
					allowBlank : true, // 是否允许为空
					mode : 'local', // 数据模式,local为本地模式
					readOnly : true, // 是否只读
					triggerAction : 'all', // 显示所有下列数.必须指定为'all'
					anchor : '90%',
					emptyText : '请选择被考核单位类型',
					store : new Ext.data.SimpleStore({ // 填充的数据
						fields : ["retrunValue", "displayText"],
						data : [['unit', '垂直管理单位'], ['dept', '机关'],
								['town', '乡镇'], ['project', '工业园区管委会和工程建设指挥部']]
					}),
					valueField : 'retrunValue', // 传送的值
					displayField : 'displayText',
					listeners : {
						'select' : function(combo, record, index) {
							var orgType = combo.getValue();
							try {
								var queryOrg = Ext.getCmp('caegory_applyOrgId');
								queryOrg.clearValue();
								queryOrg.store.reload({
											params : {
												orgType : orgType
											}
										});
							} catch (ex) {
								Ext.MessageBox.alert(ex);
							}
						}
					}
				}), {
					id : 'caegory_applyOrgId',
					xtype : 'combo',
					fieldLabel : '指标申报单位',
					hiddenName : 'goalCategory.applyOrgId',
					valueField : 'id',
					displayField : 'name',
					mode : 'local',
					store : new Ext.data.Store({
								url : '/supervise/sys/org/findOrgByType.action',
								reader : new Ext.data.JsonReader({
											root : 'root'
										}, [{
													name : 'id',
													type : 'int'
												}, {
													name : 'name',
													type : 'string'
												}])
							}),
					selectOnFocus : true,
					editable : false,
					allowBlank : true,
					triggerAction : 'all',
					loadingText : '加载中...',
					emptyText : '请考核单位'
				}, {
					xtype : 'hidden',
					// fieldLabel : '考核年度',
					name : 'goalCategory.year'
				}, {
					xtype : 'hidden',
					// fieldLabel : '指标目录id 路径',
					name : 'goalCategory.categoryIdPath'
				}, {
					xtype : 'hidden',
					// fieldLabel : '考核指标目录名称路径',
					name : 'goalCategory.categoryNamePath'
				}, {
					xtype : 'combo',
					name : 'goalCategory.isLeaf',
					fieldLabel : '<span style="color: red">*&nbsp;</span>是否末级目录',
					hiddenName : 'goalCategory.isLeaf',
					editable : false,
					allowBlank : false,
					store : new Ext.data.SimpleStore({
								data : data_yn,
								fields : ['text', 'value']
							}),
					displayField : 'text',
					valueField : 'value',
					mode : 'local',
					triggerAction : 'all',
					emptyText : '请选择'
				}, {
					fieldLabel : '是否为附加分',
//					boxLabel : '是否为附加分',
					name : 'goalCategory.isAdded',
					inputValue : '1',
					value : '0',
					xtype : 'checkbox',
					checked : false
				}, {
					xtype : 'hidden',
					// fieldLabel : '节点层次',
					name : 'goalCategory.level',
					value : 1

				}, {
					xtype : 'hidden',
					// fieldLabel : '目录状态',
					name : 'goalCategory.status'
				}],
		buttonAlign : 'center',
		minButtonWidth : 60,
		buttons : [{
			text : '添加',
			handler : function(btn) {
				var frm = this.findParentByType('form').getForm();
				var isLeaf = frm.findField('goalCategory.isLeaf').getValue();
				var isAdded = frm.findField('goalCategory.isAdded').getValue();
				if ('y' == isLeaf) {
					var point = frm.findField('goalCategory.point').getValue();
					point = Ext.num(point, 0);
					if (point == 0 && !isAdded) {
						alert("分值不能为空或小于等于0!");
						return false;
					}
					// var applyOrgId =
					// frm.findField('goalCategory.applyOrgId').getValue();
					// if(applyOrgId == '' || applyOrgId == '0'){
					// alert("请选择申报单位!");
					// return;
					// }
				}

				if (frm.isValid()) {
					btn.disable();
					var unfield = frm.findField('goalCategory.name');
					frm.submit({
						waitTitle : '请稍候',
						waitMsg : '正在提交表单数据,请稍候...',
						success : function(form, action) {
							// 增加到tree中
							var newNode = new Ext.tree.TreeNode({
										id : action.result.id,
										text : form
												.findField('goalCategory.name')
												.getValue(),
										checked : false,
										leaf : ('y' == form
												.findField('goalCategory.isLeaf')
												.getValue())
									});
							var addNode = (win_add_node.operateName == 'addNode');
							if (addNode) {// 增加节点
								var selectedNode = goalcategoryTree
										.getSelectionModel().getSelectedNode();
								var selectedParentNode = selectedNode.parentNode;
								if (selectedParentNode == null) {
									selectedNode.appendChild(newNode);
								} else {
									selectedParentNode.insertBefore(newNode,
											selectedNode);
								}
							} else {// 增加子节点
								var selectedNode = goalcategoryTree
										.getSelectionModel().getSelectedNode();
								if (selectedNode.isLeaf()) {
									selectedNode.leaf = false;
								}
								var currentNode = selectedNode;
								currentNode.parentNode.reload();
								// 将上级树形展开
								// var currentNode =
								// selectedNode.appendChild(newNode);
								// currentNode.parentNode.expand(true, true,
								// function() {
								// goalcategoryTree.getSelectionModel().select(currentNode);
								// });
								// currentNode.parentNode.expand(true, true,
								// Ext.emptyFn);
							}
							unfield.reset();
							btn.enable();
							win_add_node.hide();
						},
						failure : function() {
							Ext.Msg.show({
										title : '错误提示',
										msg : '"' + unfield.getValue() + '" '
												+ '名称可能已经存在!',
										buttons : Ext.Msg.OK,
										fn : function() {
											unfield.focus(true);
											btn.enable();
										},
										icon : Ext.Msg.ERROR
									});
						}
					});
				}
			}
		}, {
			text : '重置',
			handler : function() {
				win_add_node.findByType("form")[0].getForm().reset();
			}
		}, {
			text : '取消',
			handler : function() {
				win_add_node.hide();
			}
		}]
	})]
});

// #########################################################################################################################################
var window_edit_goalcategory = new Ext.Window({
	title : '修改指标目录节点',
	width : 480,
	height : 640,
	resizable : false,
	autoHeight : true,
	modal : true,
	closeAction : 'hide',
	listeners : {
		'hide' : function() {
			this.setTitle('修改指标目录节点');
			window_edit_goalcategory.findByType("form")[0].getForm().reset();
		}
	},
	items : [new Ext.FormPanel({
		id : 'form_edit_goalcategory',
		border : false,
		baseCls : 'x-plain',
		bodyStyle : 'padding:5px 5px 0',
		labelAlign : 'right',
		labelWidth : 110,
		url : '/supervise/biz/goalcategory/saveGoalCategory.action',
		defaults : {
			anchor : '90%',
			msgTarget : 'side'
		},
		defaultType : 'textfield',
		items : [{
					xtype : 'hidden',
					name : 'goalCategory.id'
				}, {
					xtype : 'hidden',
					name : 'goalCategory.parentId' // 父节点id
				}, {
					xtype : 'hidden',
					name : 'goalCategory.isFixed',
					value : 'n'
				}, {
					xtype : 'textfield',
					readOnly : true,
					fieldLabel : '父目录路径'
				}, {
					xtype : 'textfield',
					readOnly : true,
					fieldLabel : '考核年度'
				}, {
					fieldLabel : '<span style="color: red">*&nbsp;</span>指标目录项名称',
					name : 'goalCategory.name',
					allowBlank : false,
					maxLength : 30
				}, {
					xtype : 'numberfield',
					fieldLabel : '分值',
					name : 'goalCategory.point',
					allowBlank : true,
					maxLength : 20
				}, {
					xtype : 'hidden',
					// fieldLabel : '排序',
					name : 'goalCategory.ordering',
					value : 0
				}, {
					xtype : 'numberfield',
					fieldLabel : '换算关系(%)',
					name : 'goalCategory.percent',
					value : 1,
					disabled : true,
					maxLength : 30
				}, {
					xtype : 'hidden',
					// fieldLabel : '目录项值',
					name : 'goalCategory.value'
				}, {
					xtype : 'hidden',
					// fieldLabel : '目录分类',
					name : 'goalCategory.tag'
				}, new Ext.form.ComboBox({
							fieldLabel : '被考核单位类型', // UI标签名称
							hiddenName : 'orgType',// 作为form提交时传送的参数
							allowBlank : true, // 是否允许为空
							mode : 'local', // 数据模式,local为本地模式
							readOnly : true, // 是否只读
							triggerAction : 'all', // 显示所有下列数.必须指定为'all'
							anchor : '90%',
							emptyText : '请选择被考核单位类型',
							store : new Ext.data.SimpleStore({ // 填充的数据
								fields : ["retrunValue", "displayText"],
								data : [['unit', '垂直管理单位'], ['dept', '机关'],
										['town', '乡镇'],
										['project', '工业园区管委会和工程建设指挥部']]
							}),
							valueField : 'retrunValue', // 传送的值
							displayField : 'displayText',
							listeners : {
								'select' : function(combo, record, index) {
									var orgType = combo.getValue();
									try {
										var queryOrg = Ext
												.getCmp('caegory_edit_checkOrgId');
										queryOrg.clearValue();
										queryOrg.store.reload({
													params : {
														orgType : orgType
													}
												});
									} catch (ex) {
										Ext.MessageBox.alert(ex);
									}
								}
							}
						}), {
					id : 'caegory_edit_checkOrgId',
					xtype : 'combo',
					fieldLabel : '考核责任单位',
					hiddenName : 'goalCategory.checkOrgId',
					valueField : 'id',
					displayField : 'name',
					mode : 'local',
					store : new Ext.data.Store({
								url : '/supervise/sys/org/findOrgByType.action',
								reader : new Ext.data.JsonReader({
											root : 'root'
										}, [{
													name : 'id',
													type : 'int'
												}, {
													name : 'name',
													type : 'string'
												}])
							}),
					selectOnFocus : true,
					editable : false,
					allowBlank : true,
					triggerAction : 'all',
					loadingText : '加载中...',
					emptyText : '请考核单位'
				}, new Ext.form.ComboBox({
							fieldLabel : '指标申报单位类型', // UI标签名称
							hiddenName : 'applyOrgType',// 作为form提交时传送的参数
							allowBlank : true, // 是否允许为空
							mode : 'local', // 数据模式,local为本地模式
							readOnly : true, // 是否只读
							triggerAction : 'all', // 显示所有下列数.必须指定为'all'
							anchor : '90%',
							emptyText : '请选择被考核单位类型',
							store : new Ext.data.SimpleStore({ // 填充的数据
								fields : ["retrunValue", "displayText"],
								data : [['unit', '垂直管理单位'], ['dept', '机关'],
										['town', '乡镇'],
										['project', '工业园区管委会和工程建设指挥部']]
							}),
							valueField : 'retrunValue', // 传送的值
							displayField : 'displayText',
							listeners : {
								'select' : function(combo, record, index) {
									var orgType = combo.getValue();
									try {
										var queryOrg = Ext
												.getCmp('caegory_edit_applyOrgId');
										queryOrg.clearValue();
										queryOrg.store.reload({
													params : {
														orgType : orgType
													}
												});
									} catch (ex) {
										Ext.MessageBox.alert(ex);
									}
								}
							}
						}), {
					id : 'caegory_edit_applyOrgId',
					xtype : 'combo',
					fieldLabel : '指标申报单位',
					hiddenName : 'goalCategory.applyOrgId',
					valueField : 'id',
					displayField : 'name',
					mode : 'local',
					store : new Ext.data.Store({
								url : '/supervise/sys/org/findOrgByType.action',
								reader : new Ext.data.JsonReader({
											root : 'root'
										}, [{
													name : 'id',
													type : 'int'
												}, {
													name : 'name',
													type : 'string'
												}])
							}),
					selectOnFocus : true,
					editable : false,
					allowBlank : true,
					triggerAction : 'all',
					loadingText : '加载中...',
					emptyText : '请考核单位'
				}, {
					xtype : 'hidden',
					// fieldLabel : '考核年度',
					name : 'goalCategory.year'
				}, {
					xtype : 'hidden',
					// fieldLabel : '指标目录id 路径',
					name : 'goalCategory.categoryIdPath'
				}, {
					xtype : 'hidden',
					// fieldLabel : '考核指标目录名称路径',
					name : 'goalCategory.categoryNamePath'
				}, {
					xtype : 'combo',
					name : 'goalCategory.isLeaf',
					fieldLabel : '<span style="color: red">*&nbsp;</span>是否末级目录',
					hiddenName : 'goalCategory.isLeaf',
					editable : false,
					allowBlank : false,
					store : new Ext.data.SimpleStore({
								data : data_yn,
								fields : ['text', 'value']
							}),
					displayField : 'text',
					valueField : 'value',
					mode : 'local',
					triggerAction : 'all',
					emptyText : '请选择'
				}, {
					fieldLabel : '是否为附加分',
//					boxLabel : '是否为附加分',
					name : 'goalCategory.isAdded',
					inputValue : '1',
					value : '0',
					xtype : 'checkbox',
					checked : false
				}, {
					xtype : 'hidden',
					// fieldLabel : '节点层次',
					name : 'goalCategory.level',
					value : 1
				}, {
					xtype : 'hidden',
					// fieldLabel : '目录状态',
					name : 'goalCategory.status'
				}],
		buttonAlign : 'center',
		minButtonWidth : 60,
		buttons : [{
			text : '修改',
			handler : function(btn) {
				var frm = Ext.getCmp("form_edit_goalcategory").getForm();
				var isLeaf = frm.findField('goalCategory.isLeaf').getValue();
				var isAdded = frm.findField('goalCategory.isAdded').getValue();
				if ('y' == isLeaf) {
					var point = frm.findField('goalCategory.point').getValue();
					point = Ext.num(point, 0);
					if (point == 0 && !isAdded) {
						alert("分值不能为空或小于等于0!");
						return;
					}
					// var applyOrgId =
					// frm.findField('goalCategory.applyOrgId').getValue();
					// if(applyOrgId == '' || applyOrgId == '0'){
					// alert("请选择申报单位!");
					// return;
					// }
				}
				if (frm.isValid()) {
					btn.disable();
					var unfield = frm.findField('goalCategory.name');
					frm.submit({
								waitTitle : '请稍候',
								waitMsg : '正在提交表单数据,请稍候...',
								success : function(form, action) {
									var selectedNode = goalcategoryTree
											.getSelectionModel()
											.getSelectedNode();
									var oldName = selectedNode.text;
									var newName = form
											.findField('goalCategory.name')
											.getValue();
									if (oldName != newName) {
										selectedNode.setText(newName);
									}
									selectedNode.leaf = ('y' == form
											.findField('goalCategory.isLeaf')
											.getValue());
									var currentNode = selectedNode;
									currentNode.parentNode.reload();
									frm.reset();
									btn.enable();
									window_edit_goalcategory.hide();
								},
								failure : function() {
									Ext.Msg.show({
												title : '错误提示',
												msg : '"' + unfield.getValue()
														+ '" ' + '名称可能已经存在!',
												buttons : Ext.Msg.OK,
												fn : function() {
													unfield.focus(true);
													btn.enable();
												},
												icon : Ext.Msg.ERROR
											});
								}
							});
				}
			}
		}, {
			text : '重置',
			handler : function() {
				Ext.getCmp("form_edit_goalcategory").getForm().reset();
			}
		}, {
			text : '取消',
			handler : function() {
				window_edit_goalcategory.hide();
			}
		}]
	})]
});

// 添加兄弟节点事件实现
function addNode() {
	var parentNodeId = null;
	var rootNode = goalcategoryTree.getRootNode();
	// alert(rootNode.getPath('id') + )
	var parentFullName = null;
	var selectedNode = goalcategoryTree.getSelectionModel().getSelectedNode();
	if (selectedNode == null) {
		Ext.MessageBox.alert("提示", "请选择节点！");
		return;
	}
	// alert(selectedNode.id + "->" +selectedNode.text);
	var selectedParentNode = selectedNode.parentNode;

	if (selectedParentNode != null) {
		parentFullName = selectedParentNode.getPath('text');
		parentNodeId = Ext.num(selectedParentNode.id, null);
	}
	// alert(parentFullName);
	// window_add_goalcategory.show(this);
	// window_add_goalcategory.center();
	//	
	win_add_node.show();
	win_add_node.center();
	win_add_node.operateName = 'addNode';
	var frm = win_add_node.findByType("form")[0].getForm();
	var textfields = win_add_node.findByType('textfield');
	if (textfields) {
		textfields[0].setValue(parentFullName.substr(1));
		textfields[1].setValue(check_year + '年');
	}
	frm.findField('goalCategory.parentId').setValue(parentNodeId);
	frm.findField('goalCategory.year').setValue(check_year);
	// frm.findField('goalCategory.year').setValue(check_year);

	// window_add_goalcategory.operateName = 'addNode';
	// var frm = Ext.getCmp("form_add_goalcategory_").getForm();
	// // set value
	// frm.findField('goalCategory.parentId').setValue(parentNodeId);
};

// 添加子节点事件实现
function addChildNode() {
	var selectedNode = goalcategoryTree.getSelectionModel().getSelectedNode();
	if (selectedNode == null) {
		Ext.MessageBox.alert("提示", "请选择节点！");
		return false;
	}
	var parentNodeId = selectedNode.id;
	parentNodeId = Ext.num(parentNodeId, 0);
	win_add_node.show();
	win_add_node.center();
	win_add_node.operateName = 'addChildNode';
	var frm = win_add_node.findByType("form")[0].getForm();
	if (parentNodeId > 0) {
		frm.findField('goalCategory.parentId').setValue(parentNodeId);
	}
	frm.findField('goalCategory.year').setValue(check_year);
	var parentFullName = selectedNode.getPath('text');
	var textfields = win_add_node.findByType('textfield');
	if (textfields) {
		textfields[0].setValue(parentFullName.substr(1));
		textfields[1].setValue(check_year + '年');
	}
}
// 删除节点事件实现
function delNode() {
	// 得到选中的节点
	var selectedNode = goalcategoryTree.getSelectionModel().getSelectedNode();
	if (selectedNode == null) {
		Ext.MessageBox.alert("提示", "请选择节点！");
		return false;
	} else if (selectedNode.attributes.fixed == 'true') {
		Ext.MessageBox.alert("提示", "固定节点，不能删除！");
		return false;
	} else if (selectedNode.hasChildNodes()) {
		Ext.MessageBox.alert("提示", "包含子节点的指标目录节点不能被删除，必须先删除所有子节点！");
		return false;
	}
	Ext.Msg.confirm('确认删除', '是否确认要删除[' + selectedNode.text + ']指标目录项节点？',
			function(btn) {
				if (btn == 'yes') {
					Ext.Ajax.request({
						url : '/supervise/biz/goalcategory/deleteGoalCategory.action',
						params : {
							nodeId : selectedNode.id
						},
						success : function(response, opts) {
							var result = Ext.util.JSON
									.decode(response.responseText);
							if (result.success) {
								selectedNode.remove();
							} else {
								Ext.Msg.show({
											title : '错误提示',
											msg : result.message,
											buttons : Ext.Msg.OK,
											icon : Ext.Msg.ERROR
										});
							}
						},
						failure : function(response, opts) {
							Ext.Msg.show({
										title : '错误提示',
										msg : '删除时发生错误!',
										buttons : Ext.Msg.OK,
										icon : Ext.Msg.ERROR
									});
						}
					});
				}
			});

};
// 修改节点事件实现
function editNode() {
	var selectedNode = goalcategoryTree.getSelectionModel().getSelectedNode();
	if (selectedNode == null) {
		Ext.MessageBox.alert("提示", "请选择节点！");
		return false;
	} else if (selectedNode.attributes.fixed == 'true') {
		Ext.MessageBox.alert("提示", "固定节点，不能修改！");
		return false;
	}
	var nodeId = selectedNode.id;
	window_edit_goalcategory.show();
	window_edit_goalcategory.center();

	// 取得节点数据
	Ext.getBody().mask("数据加载，请稍等...", "x-mask-loading");
	Ext.Ajax.request({
				url : '/supervise/biz/goalcategory/getNodeById.action',
				success : function(response, options) {
					Ext.getBody().unmask();
					var result = Ext.util.JSON.decode(response.responseText).entity;
					if (Ext.isObject(result)) {
						var frm = Ext.getCmp("form_edit_goalcategory")
								.getForm();
						// set value
						frm.findField('goalCategory.id').setValue(result.id);
						frm.findField('goalCategory.name')
								.setValue(result.name);
						frm.findField('goalCategory.point')
								.setValue(result.point);
						frm.findField('goalCategory.ordering')
								.setValue(result.ordering);
						frm.findField('goalCategory.percent')
								.setValue(result.percent);
						frm.findField('goalCategory.value')
								.setValue(result.value);
						frm.findField('goalCategory.isFixed')
								.setValue(result.isFixed);
						frm.findField('goalCategory.tag').setValue(result.tag);
						frm.findField('goalCategory.checkOrgId')
								.setValue(result.checkOrgId);
						frm.findField('goalCategory.applyOrgId')
								.setValue(result.applyOrgId);
						var orgName = '';
						var applyOrgName = '';
						var size = ds_org_select.getCount();
						for (var i = 0; i < size; i++) {
							var record = ds_org_select.getAt(i);
							var id = record.get('id');
							if (id == result.checkOrgId) {
								orgName = record.get('name');
							}
							if (id == result.applyOrgId) {
								applyOrgName = record.get('name');
							}
							if (orgName != '' && applyOrgName != '') {
								break;
							}
						}
						if (orgName != '') {
							frm.findField('goalCategory.checkOrgId')
									.setRawValue(orgName);
						} else {
							frm.findField('goalCategory.checkOrgId')
									.setRawValue('');
						}
						if (applyOrgName != '') {
							frm.findField('goalCategory.applyOrgId')
									.setRawValue(applyOrgName);
						} else {
							frm.findField('goalCategory.applyOrgId')
									.setRawValue('');
						}
						frm.findField('goalCategory.year')
								.setValue(result.year);
						frm.findField('goalCategory.categoryIdPath')
								.setValue(result.categoryIdPath);
						frm.findField('goalCategory.categoryNamePath')
								.setValue(result.categoryNamePath);
						frm.findField('goalCategory.isLeaf')
								.setValue(result.isLeaf);
						frm.findField('goalCategory.level')
								.setValue(result.level);
						frm.findField('goalCategory.status')
								.setValue(result.status);
						frm.findField('goalCategory.parentId')
								.setValue(result.parentId);

						var selectedParentNode = selectedNode.parentNode;
						var parentFullName = '';
						if (selectedParentNode != null) {
							parentFullName = selectedParentNode.getPath('text');
						}
						var textfields = window_edit_goalcategory
								.findByType('textfield');
						if (textfields) {
							textfields[0].setValue(parentFullName.substr(1));
							textfields[1].setValue(result.year + '年');
						}
						var isAdded = result.isAdded;
						var fieldIsAdded = frm.findField('goalCategory.isAdded');
						fieldIsAdded.setValue(result.isAdded);
						if(isAdded == '1') {
							fieldIsAdded.checked  = true;
						} else {
							fieldIsAdded.checked  = false;
						}
					}
				},
				failure : function() {
					Ext.getBody().unmask();
					window_edit_goalcategory.hide();
					Ext.Msg.alert('提示', '数据加载失败！');
				},
				params : {
					nodeId : nodeId
				}
			});
}

var p_goalcategory = {
	id : 'goalcategory-panel',
	border : false,
	layout : 'border',
	items : [goalcategoryTree]
}
